/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package ar.com.arkios.kfconTraductor.util;

import org.apache.log4j.Logger;

/**
 * 
 * @author Ale para <b>Arkios S.A.</b>
 * 
 */
public class Timer extends Thread {

    /** Frecuencia con la cual se chequea el Timer */
	protected int m_rate = 100;

	/** Cantidad de milisegundos */
	private int m_length;

	/** Tiempo transcurrido */
	private int m_elapsed;

    /** Mensaje en caso de timeout*/
    private String m_message;

    private static final Logger miLogger = Logger.getLogger(Timer.class);

	/**
	  * Crea un Timer con el tiempo indicado por parametro
	  * @param	lenhgt
	  */
	public Timer ( int length, String message )
	{
		m_length = length;
        m_message = message;
		m_elapsed = 0;

	}


	/** Resetea el timer */
	public synchronized void reset()
	{
		m_elapsed = 0;
	}


    @Override
	public void run()
	{
		// Seguir en Loop
		for (;;)
		{
			// Manda  el timer a dormir
			try
			{
				Thread.sleep(m_rate);
			}
			catch (InterruptedException ioe)
			{
				continue;
			}


			synchronized ( this )
			{
				// Incrementa el tiempo restante
				m_elapsed += m_rate;

				if (m_elapsed > m_length)
				{
					// Provoca un timeout
					timeout();
				}
			}

		}
	}

	// Cuando se produce un timeout Salimos del Sistema y logueamos la salida.
	public void timeout()
	{
        miLogger.error(this.m_message + " tiempo de espera agotado.");
        miLogger.error("Se cierra el conector java.");
        System.exit(0);
        
	}



}
